package cn.feizhu.aimarket.ai.client;


import com.alibaba.cloud.ai.dashscope.api.DashScopeResponseFormat;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import jakarta.annotation.Resource;
import lombok.Data;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
public class CommandProcessChatClientFactory {


    @Resource
    private ChatModel dashscopeChatModel;

    private static final String COMMAND_PROCESS_PROMPT = """
你是一个专门处理微恐怖悬疑小说创作需求的智能分析器。
你的任务是从用户输入中精准提取小说创作的核心要素，为后续的恐怖小说大纲生成做准备。

请分析用户输入，专注提取以下关键信息：
1. 核心人物设定（主角身份、性格特点、初始状态）
2. 核心场景环境（主要发生地点、环境特征、日常背景）
3. 恐怖元素偏好（规则怪谈、认知恐怖、日常异化等）
4. 特殊创作要求（章节数量、篇幅长度、特定禁忌等）

用户输入：{user_input}

请严格按照以下格式输出分析结果：
核心人物: [从用户输入中提取的人物信息，如果未明确则根据输入推测合适的主角设定,给出人物名称]
核心场景: [从用户输入中提取的场景信息，如果未明确则根据输入推测合适的恐怖场景]
主要内容: [从用户输入中提取合理扩展]
原始输入: [用户原始内容]
恐怖风格: [用户偏好的恐怖类型，默认为"微恐怖+规则怪谈"]
特殊要求: [用户的具体创作要求，如无则填写"无特殊要求"]

注意：
- 不要添加用户未提及的内容
- 专注于恐怖悬疑小说的核心要素
- 保持简洁精准，避免过度解读
- 如果信息不足，基于恐怖小说常见设定进行合理推测
- 要把用户信息核心意思不能歪曲的携带上
!!!不得添加其他任何内容，只可以生成上述内容"
""";

    @Bean
    public ChatClient commandProcessClient() {
        return ChatClient.builder(dashscopeChatModel)
                .defaultSystem(COMMAND_PROCESS_PROMPT)
                .build();
    }

    /**
     * 工作流中只能传入这个新建的
     * TODO 后面可以考虑池化技术
     * @return
     */
    public ChatClient createCommandProcessClient() {
        return ChatClient.builder(dashscopeChatModel)
                .defaultSystem(COMMAND_PROCESS_PROMPT)
                .build();
    }

}
